package pe.edu.cibertec.validator;

import java.util.Calendar;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
 *
 * @author DanJoas
 */
@FacesValidator(value = "fechaLimite")
public class FechaLimiteValidador implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        Date fecha = (Date) value;
        Calendar cal = Calendar.getInstance();
        cal.setTime(fecha);

        if (cal.after(getFechaActual(Calendar.getInstance()))) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Fecha Incorrecta", "Fecha Ingresada no puede ser mayo a la actual");

            throw new ValidatorException(fm);
        }
    }

    private Calendar getFechaActual(Calendar cal) {

        cal.set(Calendar.AM_PM, Calendar.AM);
        cal.set(Calendar.HOUR, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);

        return cal;
    }
}
